//============================================================================
// Nome        : Interfaces.h
// Autores     : T1G7
//                                      Felipe Galvão do Espírito Santo
//                                      Ivanilda Maísa Costa Brazão de Almeida
//                                      Paulo Jorge de Faria dos Reis
// Versão      : 1.0
// Data        : Maio de 2011
// Copyright   : Creative Commons 2.0
// Descrição   : CAL 2011 - TG1
//               Tema 12 - Transporte de pacientes de uma clínica de saúde.
//============================================================================

#ifndef INTERFACES_H_
#define INTERFACES_H_

#include <string>
#include <vector>
#include "Dados.h"

using std::string;
using std::vector;

//! Interface com o utilizador.
/*!
 *  Colecção de funções que permitem uniformizar a interface com o utilizador através de uma consola de texto.
 *  A substituição desta classe por uma equivalente (a mesma interface, ou seja, mantendo o Interfaces.h e substituindo o Interfaces.cpp)
 *  por um conjunto de funções que façam uso de uma interface gráfica, permite a adaptação e evolução da aplicação.
 *  Disponibiliza uma interface para apresentação de informação, para criar, por exemplo, um menu envolvido numa moldura.
 *  Um sistema de envio de mensagens simples, com e sem possibilidade de resposta.
 */
class Interfaces
{
public:
	Interfaces();							//! Construtor da classe.
	~Interfaces();							//! Destrutor.
	void sms(string mensagem);				//! Utilizado para enviar mensagem para a consola.
	string smsRetorno(string pergunta);		//! Serve para colocar questões simples ao utilizador e receber uma resposta.
	string smsRetornoNumeros(string pergunta);		//! Serve para colocar questões simples ao utilizador e receber uma resposta numérica.
	void limpaEcra();						//! Limpa o ecran.
	void menuNaConsola(vector<string>& opcoes, char vertical = '*', char horizontal = '*');	//! Apresenta um menu previamente criado.
	void ajuda(string menu);				//! Texto de ajuda da interface.
	void ligarDados(Dados& _pDados);		//! Disponibiliza um apontador para a componente de dados da aplicação para possibilitar a sua visualização.

private:
	Dados* pDados;
};

#endif /* INTERFACES_H_ */






